HDF_PARSE
The HDF_PARSE function recursively descends through an HDF4 file and creates an ordered hash containing object information and data.
Note: This function is not part of the standard HDF interface but is provided as a programming convenience. Its IDL source code is in the file hdf_parse.pro
, located in the IDL lib
directory.
Example
The following example shows how to parse a file and print the tags of the ordered hash:
File = FILEPATH('vattr_example.hdf', SUBDIR=['examples','data'])
Result = HDF_PARSE(File)
Result
IDL prints:
{
"_NAME": "C:\\<etc.>\\vattr_example.hdf",
"_TYPE": "GROUP",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/",
"MetObs": {
"_NAME": "MetObs",
"_TYPE": "VDATA",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/",
"_COUNT": 10,
"_NFIELDS": 1,
"_FIELD_NAMES": ["TempDP"],
"TempDP": {
"_NAME": "TempDP",
"_TYPE": "VDATA_FIELD",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/MetObs",
"_ORDER": 1,
"_IDL_DATATYPE": "INT",
"_DATA": "<unread>",
"field_contents": {
"_NAME": "field_contents",
"_TYPE": "ATTRIBUTE",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/MetObs/TempDP",
"_IDL_DATATYPE": "STRING",
"_DATA": "Dew point temperature in degrees Celsius."
}
},
"vdata_contents": {
"_NAME": "vdata_contents",
"_TYPE": "ATTRIBUTE",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/MetObs",
"_IDL_DATATYPE": "STRING",
"_DATA": "Ground station meteorological observations."
},
"num_stations": {
"_NAME": "num_stations",
"_TYPE": "ATTRIBUTE",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/MetObs",
"_IDL_DATATYPE": "INT",
"_DATA": [10]
}
},
"vdata_contents": {
"_NAME": "vdata_contents",
"_TYPE": "VDATA",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/",
"_COUNT": 1,
"_NFIELDS": 1,
"_FIELD_NAMES": ["VALUES"],
"VALUES": {
"_NAME": "VALUES",
"_TYPE": "VDATA_FIELD",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/vdata_contents",
"_ORDER": 43,
"_IDL_DATATYPE": "BYTE",
"_DATA": "<unread>
}
},
"num_stations": {
"_NAME": "num_stations",
"_TYPE": "VDATA",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/",
"_COUNT": 1,
"_NFIELDS": 1,
"_FIELD_NAMES": ["VALUES"],
"VALUES": {
"_NAME": "VALUES",
"_TYPE": "VDATA_FIELD",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/num_stations",
"_ORDER": 1,
"_IDL_DATATYPE": "INT",
"_DATA": "<unread>"
}
},
"field_contents": {
"_NAME": "field_contents",
"_TYPE": "VDATA",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/",
"_COUNT": 1,
"_NFIELDS": 1,
"_FIELD_NAMES": ["VALUES"],
"VALUES": {
"_NAME": "VALUES",
"_TYPE": "VDATA_FIELD",
"_FILE": "C:\\<etc.>\\vattr_example.hdf",
"_PATH": "/field_contents",
"_ORDER": 41,
"_IDL_DATATYPE": "BYTE",
"_DATA": "<unread>"
}
}
}
The next example uses the READ_DATA keyword and prints the contents of a VData field:
File = FILEPATH('vattr_example.hdf', SUBDIR=['examples','data'])
Result = HDF_PARSE(File, /READ_DATA)
Print, Result['num_stations', 'VALUES', '_DATA']
IDL prints:
10
Syntax
Result = HDF_PARSE(File, [/ READ_DATA])
Return Value
The Result is an ordered hash containing the parsed file. The tags in the hash depend upon the object type, as outlined in the tables below.
Tags common to all object types
Tag |
Description |
---|---|
_NAME |
Object name (or filename if at top level) |
_TYPE |
Object type, which can be any of the following: VGROUP, VDATA, VDATA_FIELD, SD, |
_FILE |
The filename to which the object belongs |
_PATH |
The full path within the file to the object. If the object is at the root level of the file, then this field is set to ' |
Tags associated with VGroups
All objects within the group will be added to the group's hash with their names as the keys.
Tags associated with VData
Tag |
Description |
---|---|
_COUNT |
The number of records in the data |
_NFIELDS |
The number of fields in the dataset |
_FIELD_NAMES |
A string array with the names of all fields within the VData. If there are no fields, this value is set to !NULL. |
Fields within the VData will be added as fields to the ordered hash with the field names as the hash key names. See the next table for a description of the fields.
If the VData contains attributes or annotations, they will be added to the Vdata hash with the attribute or annotation names for the keys.
Tags associated with VData fields
Tag |
Description |
---|---|
_ORDER |
The number of entries (the order) of the field |
_IDL_DATATYPE |
String value corresponding to the IDL data type of the field values |
_DATA |
If the READ_DATA keyword is set, this field contains the data from the file. Otherwise, it contains the string |
If the field contains attributes, they will be added to the data field's hash with the attribute names for the keys.
Tags associated with Scientific Datasets (SDs)
Tag |
Description |
---|---|
_NDIMENSIONS |
Number of dimensions |
_DIMENSIONS |
Dimensions of the dataset |
_IDL_DATATYPE |
A string corresponding to the IDL data type of the dataset |
_DATA |
If the READ_DATA keyword is set, this field contains the data from the file. Otherwise, it contains the string <unread> . |
If the dataset contains attributes, they will be added to the dataset's hash, with the attribute names for the keys.
Tags associated with images
Tag |
Description |
---|---|
_RASTER_TYPE |
HDF4 contains three types of raster images:
|
_NDIMENSIONS |
The number of dimensions in the image. |
_DIMENSIONS |
The image dimensions |
_IDL_DATATYPE |
String value corresponding to the IDL data type of the image. |
_INTERLACE |
An integer corresponding to the interlace mode of the image data. Possible values are:
|
_DATA |
If the READ_DATA keyword is set, this field contains the data from the file. Otherwise, it contains the string <unread> . |
If the image contains attributes, they will be added to the dataset's hash, with the attribute names for the keys.
Tags associated with attributes
Tag |
Description |
---|---|
_IDL_DATATYPE |
A string corresponding to the IDL data type of the dataset |
_DATA |
The data from the attribute. The HDF_PARSE function always reads data from attributes, regardless of the READ_DATA keyword setting. |
Tags associated with annotations
Tag |
Description |
---|---|
_DATA |
The value stored in the annotation. The HDF_PARSE function always reads data from annotations, regardless of the READ_DATA keyword setting. |
Tags associated with palettes
Tag |
Description |
---|---|
_DATA |
The value stored in the annotation. The HDF_PARSE function always reads data frompalettes, regardless of the READ_DATA keyword setting. |
Arguments
File
A string that specifies the file to be parsed.
Keywords
READ_DATA
If you set this keyword, all data from scientific datasets, images, and VData fields will be read from the file. If you do not set this keyword, the _DATA field for these object types will be set to the string '<unread>'
.
Version History
8.4.1 |
Introduced |
See Also